package com.example.d6_homework.homework04;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        // 需求：当电脑磁盘上存储的文件越来越多的时候,要从系统中查找某一个文件就变的比较麻烦为了快速从磁盘上找的某一类文件,此时就可以借助于类似于Everything这样的文件搜索工具
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要查找的文件名后缀：");
        String suffix = sc.next();

        System.out.println("请输入文件夹路径：");
        String dirPath = sc.next();
        searchFile(dirPath, suffix);
    }

    /**
     * 搜索文件
     *
     * @param dirPath 文件夹路径
     * @param suffix  文件后缀名
     */
    public static void searchFile(String dirPath, String suffix) {
        // 1.把一些非法的情况拦截住
        if (dirPath == null || dirPath.isEmpty() || suffix == null || suffix.isEmpty()) {
            System.out.println("输入的路径或后缀无效");
            return; // 表示无法搜索
        }

        // 2.封装文件对象
        File dir = new File(dirPath);
        if (dir.isFile()) {
            System.out.println("指定的路径是一个文件,而不是文件夹");
            return;
        }

        if (!dir.exists()) {
            System.out.println("指定的路径不存在");
            return;
        }

        // 3.获取当前文件夹下的所有一级文件对象
        File[] files = dir.listFiles();
        if (files == null) {
            System.out.println("无法获取文件列表");
            return;
        }

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        // 4.遍历一级文件对象
        for (File file : files) {
            String fileName = file.getName();
            int index = fileName.lastIndexOf(".");
            if (index > 0 && fileName.substring(index).equals("." + suffix)) {
                // 打印文件消息
                System.out.println("名称\t\t\t路径\t\t\t\t大小(字节)\t\t\t最后修改时间");
                System.out.println(fileName + "\t\t" + file.getAbsolutePath() + "\t" + file.length() / 1024 + "KB" + "\t\t\t\t\t" + sdf.format(file.lastModified()));
            }
        }
    }
}
